1 research outputs found

    Hardware Accelerator for Convolutional Neural Networks

    Get PDF
    Στην παρούσα εργασία επιχειρούμε να συζητήσουμε το θέμα των επιταχυντών για νευρωνικά δίκτυα που γίνεται αντιληπτό ως συνδετικός κρίκος ανάμεσα σε δύο πεδία της επιστήμης των υπολογιστών: τη σχεδίαση παράλληλων συστημάτων και τη σχεδίαση αλγορίθμων μηχανικής μάθησης. Το πρώτο πεδίο ερευνά τους τρόπους με τους οποίους προγράμματα υψηλού επιπέδου αντιστοιχίζονται σε δομές υλικού με σκοπό την επιτάχυνση των υπολογισμών. Το δεύτερο ερευνά τη σχεδίαση δυναμικών αλγορίθμων που έχουν ως στόχο την προσέγγιση της λύσης προβλημάτων που είναι εξαιρετικά δύσκολο (ή ακόμη κι αδύνατο) να επιλυθούν από προγράμματα γραμμένα εξ’ ολοκλήρου από το χρήστη. Ο κλάδος της μηχανικής μάθησης έχει αναδείξει την τελευταία δεκαετία ένα πλήθος εφαρμογών και δυνατοτήτων κυρίως μέσω της βαθιάς μάθησης και των νευρωνικών δικτύων. Τα συνελικτικά νευρωνικά δίκτυα είναι μια ειδική κατηγορία βαθιών νευρωνικών δικτύων που χρησιμοποιούνται για ανίχνευση εικόνων καθώς και σε πολλές άλλες εφαρμογές που σχετίζονται με την υπολογιστική όραση. Ένας επιταχυντής υλικού είναι ένα σύστημα ειδικού σκοπού εξειδικευμένο στην αύξηση της ταχύτητας των εντατικών υπολογισμών που αποτελούν μέρος του αλγορίθμου ενός νευρωνικού δικτύου. Σκοπός του είναι τα αποτελέσματα των υπολογισμών να παράγονται γρήγορα και αποδοτικά όσον αφορά την κατανάλωση ενέργειας. Στα επόμενα κεφάλαια θα προσεγγίσουμε το θεωρητικό υπόβαθρο των παράλληλων υπολογισμών καθώς και εκείνο των νευρωνικών δικτύων και θα παρουσιάσουμε τη σχεδίαση ενός επιταχυντή συνελικτικού νευρωνικού δικτύου σε FPGA. Η υλοποίηση πραγματοποιήθηκε σε γλώσσα VHDL και βρίσκεται στο σύνδεσμο: https://github.com/AggelosPsimitis/FPGA-hardware-accelerator-for-CNN/tree/master .In this thesis we attempt to discuss the concept of hardware accelerators for convolutional neural networks which can be perceived as a linkage between two different areas of computer science. The design of parallel systems and the design machine learning algorithms. The former exploits ways of mapping high level programs into hardware structures and has been growing since the rise of VLSI engineering in the last 40 years. The latter addresses the idea of creating dynamic algorithms that proceed in an iterative fashion, based on some task and some quantity of experience, in order to solve problems that are extremely difficult (or even impossible) to be solved using hard-coded programs. In the last 10 years machine learning has opened a vast world filled with endless possibilities and countless applications, especially through deep learning and deep neural networks (DNNs). Convolutional neural networks (CNNs) are a special case of DNNs which are used for image recognition in various computer-vision related tasks. A hardware accelerator is a special-purpose system dedicated to increase the speed of the computationally intensive parts of the CNN algorithm for results to be given both fast and efficiently regarding energy consumption. In what follows, we will approach the theoretical background of parallel computations and neural networks and we will present the FPGA design of the CNN accelerator. All VHDL code written for this work can be found in https://github.com/ AggelosPsimitis/FPGA-hardware-accelerator-for-CNN/tree/master
    corecore